package {{apiPackage}};

import com.huinong.framework.autoconfigure.web.BaseResult;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.http.MediaType;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
import com.huinong.framework.autoconfigure.web.BaseResult;

{{#importList}}import {{{import}}};
{{/importList}}

@FeignClient(name = "{{serviceName}}", fallbackFactory = {{feignClientName}}FeignFallbackFactory.class)
public interface {{feignClientName}}Feign{
{{#operations}}
  {{#operation}}

    @RequestMapping(value = "{{path}}", method = RequestMethod.{{httpMethod}} {{#allParams}}{{#isFile}}, consumes = MediaType.MULTIPART_FORM_DATA_VALUE{{/isFile}}{{/allParams}})
    BaseResult{{#hasBaseResult}}<{{#returnObjectList}}List<{{/returnObjectList}}{{returnObject}}{{#returnObjectList}}>{{/returnObjectList}}>{{/hasBaseResult}} {{functionId}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{#hasMore}},{{/hasMore}}{{^hasMore}}{{#reactive}}, {{/reactive}}{{/hasMore}}{{/allParams}});
  {{/operation}}
{{/operations}}
}